const Koa = require("koa");

// 创建app
const app = new Koa();

/* 
ctx：上下文（Context）对象；
  - koa并没有像express一样，将req和res分开，而是将它们作为ctx的属性；
  - ctx代表一次请求的上下文对象；
  - ctx.request：获取请求对象；
  - ctx.response：获取响应对象；

next：本质上是一个dispatch，类似于之前的next；
*/

// 中间件
app.use((ctx, next) => {
    // 1.请求对象
    console.log(ctx.request); // 请求对象: Koa封装的请求对象 // .URL.pathname
    //   console.log(ctx.req) // 请求对象: Node封装的请求对象

    // 2.响应对象
    //   console.log(ctx.response) // 响应对象: Koa封装的响应对象
    //   console.log(ctx.res) // 响应对象: Node封装的响应对象

    // 3.其他属性
    //   console.log(ctx.query)
    //   console.log(ctx.params)

    next();
});

app.use((ctx, next) => {
    console.log("second middleware~");
    ctx.body = "lrq"; // 返回数据
});

// 启动服务器
app.listen(6000, () => {
    console.log("koa服务器启动成功~");
});
